Unofficial List of Errata for Clean Code: A Handbook of Agile Software Craftmanship (6th printing)

Page 21, 5th paragraph: “we’ve changed the names…” should be “We’ve changed the names…”. (Felix Siegrist)
Page 23, Listing: “(realdays / WORKDAYSPERWEEK)” should be “(realTaskDays / WORKDAYSPERWEEK)”. (Felix Siegrist)
Page 30, 2nd paragraph: “MAC addresses, port addresses, and Web addresses” should instead be “postal addresses, MAC addresses, and Web addresses” to match the succeeding names.
Page 32, footer: URL “www.fitnesse.org” missing an ‘s’.
Page 39, Listing 3-5: “SalariedEmployee” missing an ‘e’.
Page 41, 5th paragraph: “transform-(StringBuffer out)” should be “transform(StringBuffer out)”.
Page 42, 2nd line: “writeField(output-Stream, name)” should be “writeField(outputStream, name)”. (Felix Siegrist)
Page 42, 2nd paragraph: “output-Stream” should be “outputStream”. (Felix Siegrist)
Page 54, paragraph under code fragment: “it’s” should be “its”. (Daniel Wagner-Hall)
Page 74, 2nd paragraph: “The second argument is…” should be “The second comment is…”. (Felix Siegrist)
Page 88, 2nd paragraph, 2nd line: “hiearchy” should be “hierarchy”. (Felix Siegrist)
Page 95, 2nd paragraph: “complimentary” should be “complementary”.
Page 111, first line after first code block: “If we change getEmployee…” should be “If we change getEmployees…”. (Felix Siegrist)
Page 115, upper half: “Map” should be replaced three times by “Map”. This assumes that sensorId is of type String as in the code block in middle of page. (Felix Siegrist)
Page 138, Listing 10-1, first line: “setAçowDragging” should be “setAllowDragging”. (Felix Siegrist)
Page 138, 2nd to last line: “a guidelines for” should be “a guideline for”. (Felix Siegrist)
Page 139, 3rd paragraph: “one of the more important concept in” should be “one of the more important concepts in”. (Felix Siegrist)
Page 146, 4th paragraph: “a list prime numbers” should be “a list of prime numbers”. (Felix Siegrist)
Page 160, footer 7: “[AspectJ]]” should be “[AspectJ]“. (Felix Siegrist)
Page 188, footer 16: “it not guaranteed” should be “it is not guaranteed”. (Felix Siegrist)
Page 190, code block: “ThreadJiglePoint” should be replaced three times by “ThreadJigglePoint”. (Felix Siegrist)
Page 194, last line of paragraph after listing 14-1: “command-line argument” should be “command-line arguments”. (Felix Siegrist)
Page 231, 3rd paragraph: “currentArg” should be replaced twice with currentArgument” and “BooleanArgumentMarshaler” should be “IntegerArgumentMarshaler”. (Felix Siegrist)
Page 256, listing 15-3 title: “ComparisonCompator.java” should be “ComparisonCompactor.java”. (Felix Siegrist)
Page 257, listing 15-3 title: “ComparisonCompator.java” should be “ComparisonCompactor.java”. (Felix Siegrist)
Page 268, 5th paragraph: “MonthCodeToQuarter (line 334)” should be “MonthCodeToQuarter (line 356)”. (Felix Siegrist)
Page 269, first line: “testWeekdayCodeToString” should be “stringToWeekdayCode”. (Felix Siegrist)
Page 270, 2nd to last line: “world should be word”. (Felix Siegrist)
Page 272, first paragraph, first sentence: “it’s” should be “its”. (Tod Gentille)
Page 276, 2nd paragraph: “(lines 18-205)” should be “(lines 189-205)”. (Felix Siegrist)
Page 280, last sentence: “The exact same analysis” should be “The same analysis” or at least “Exactly the same analysis”. “Exact same” is ungrammatical. (Tod Gentille)
Page 283, 2nd to last pagraph: “making the all three methods” should be “making all three methods”. (Felix Siegrist)
Page 296, first paragraph, 2nd to last sentence: “it’s” should be “its”. (Tod Gentille)
Page 309, in the HourlyPayGrade enum: “LEUTENANTJOURNEYMAN” should be “LIEUTENANTJOURNEYMAN”. (Alex Moore)
Page 313, 2nd to last line: “a test that annotated with” should be “a test that is annotated with”. (Felix Siegrist)
Page 318, 2nd code block: “startAllThreadsw” should be “startAllThreads”. (Felix Siegrist)
Page 319, 3rd line: “just change the processMessage” should be “just change the process method”. (Felix Siegrist)
Page 319, 2nd paragraph of section “Server Observations”: “so the we could” should be “so we could”. (Felix Siegrist)
Page 324, code block: “value” should be replaced twice with “lastId”. (Felix Siegrist)
Page 325, 2nd to last row of 2nd table: “PUTFIELD value” should be “PUTFIELD lastId”. (Felix Siegrist)
Page 328, 2nd to last text line (before code block): “HashTable” should be “Hashtable”. (Felix Siegrist)
Page 329: “Lock the HashTable” should be “Lock the Hashtable” and “Wrap the HashTable” should be “Wrap the Hashtable”. (Felix Siegrist)
Page 336, 2nd paragraph, bulleted items: The words “create” and “update” should be mutually exchanged. (Felix Siegrist)
Page 344: Listing A-4 does not show code of ClientTest.java (it repeats Server.java). (Felix Siegrist)
Page 346, first paragraph: “process message” should be “process method”. (Felix Siegrist)
Appendix C: The chapter/page numbers of the cross references are all wrong. (Felix Siegrist) A replacement Appendix C has been provided by Dan Pierson, which he notes is incomplete but is a good starting point.
Remarks:

Page 263, listing 15-5: in formatCompactedComparison() there is still a temporal coupling between findCommonPrefixAndSuffix() and the following calls to compact(). (Felix Siegrist)
Page 312, N5: The code example wants to illustrate that short variable names (like “i”) are appropriate for short scopes. But it also uses a variable named “g”, which is not an appropriate name for an instance variable (long scope). (Felix Siegrist)

http://www.engineering.uiowa.edu/~wwalls/clean_code_errata/

0132350882.jpg

Author: Shi Shougang

Created: 2015-03-05 Thu 23:21

Emacs 24.3.1 (Org mode 8.2.10)

Validate